// pages/chat/chat.js
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    username:'',
    value: "",
    list: [],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    app.globalData.loginPromise.then(res => {
      if (!app.globalData.isLogin) {
        wx.redirectTo({
          url: '/pages/login/index'
        })
      } else {
        //已经登录了
        console.log(options.id)
        const user = app.globalData.userInfo
        this.username = user.loginName
        // 因为界面上要根据username判断聊天记录显示在左侧还是右侧,所以放在data上。
        this.groupId = 'web09' + options.id
        this.nickname = user.username
        this.avatar = user.avatar
        //建立socket的链接了
        const url = `wss://showme.myhope365.com/websocketChat?username=${this.username}&password=&courseId=${this.groupId}&nickName=${this.nickName}&avatar=${this.avatar}`
        wx.connectSocket({
          url,
        })  
        wx.onSocketOpen((result) => {
          console.log('我们已经建立了链接...')
          //获取历史消息
          let historybody = {
            cmd: 19, // 命令 
            type: 1, // 类型 固定值
            groupId: this.groupId, //  分组的id
            userId: this.username // 用户id（这里可以用loginName）
          }
          wx.sendSocketMessage({
            data: JSON.stringify(historybody),
          }),
          this.intervalId = setInterval(() => {
            wx.sendSocketMessage({
              data: JSON.stringify({
                "cmd": 13,
                "hbbyte": "-127"
              }),
            })
          }, 5000);
          //监听服务端消息的变化
          wx.onSocketMessage((result) => {
            const data = JSON.parse(result.data)
            console.log(data)
            if (data.command === 6) {
              wx.showToast({
                title: '链接成功',
              })
            } else if (data.command === 11) {
              this.data.list.push(data.data)
              this.setData({
                list: this.data.list,
                valaue:""
              })
            } else if (data.command === 20 && data.code === 10018) {
              //获取到了历史消息
              console.log(data.data.groups[this.groupId]);
              this.setData({
                list: data.data.groups[this.groupId]
              })
            }
          })
        })
      }
    })
  },
  sendMsg() {
    console.log(this.data.value)
    const body = {
      from: this.username, // 发送人，当前用户的用户名
      createTime: new Date().getTime(), // 发送时间
      cmd: 11, // 命令固定内容
      group_id: this.groupId, // 分组id。  想要发送到哪个组里
      chatType: 1, //  聊天类型 固定内容
      msgType: 0, // 消息类型 固定内容
      content: this.data.value, // 消息内容，自己设计结构，比如你想发送图片（图片上传的接口）
      nickName: this.nickName, // 用户昵称
      avatar:this.avatar, // 用户头像
      type: "1" // 消息类型。 你可以自己设计，发送过去是什么，返回的就是什么（1: 普通文本 2: 图片 3：点赞 4， 送花）
    }
    wx.sendSocketMessage({
      data: JSON.stringify(body),
    })
  },

  //关闭链接
  onUnload() {
    wx.closeSocket({
      code: 1000,
    })
  },
     /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '聊天室',
    }
  }
})